package opf5.entities.ordenadoresJugadores;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import opf5.entities.calificaciones.CalculadorPromedios;
import opf5.entities.dominio.Jugador;

public class OrdenadorJugadoresPromedioNPartidos implements OrdenadorJugadores, Comparator<Jugador> {

	private int numero;

	public OrdenadorJugadoresPromedioNPartidos(int n) {
		this.numero = n;
	}
	
	@Override
	public List<Jugador> ordenarJugadores(List<Jugador> jugadores) {
		List<Jugador> jugadoresOrdenados = new ArrayList<Jugador>(jugadores);
		Collections.sort(jugadoresOrdenados, this);
		Collections.reverse(jugadoresOrdenados);
		return jugadoresOrdenados;
	}

	@Override
	public int compare(Jugador jugador1, Jugador jugador2) {
		double promedio1 = CalculadorPromedios.calcularPromedioUltimosNPartidos(jugador1, numero);
		double promedio2 = CalculadorPromedios.calcularPromedioUltimosNPartidos(jugador2, numero);
		
		if (promedio1 < promedio2)
			return -1;
		else if (promedio2 > promedio1)
			return 1;
		
		return 0;
	}

}
